Skip to content

feat(id): add kitty-disambiguate-v1 key decoding - #4438

Merged
dezren39 merged 1 commit into
mainfrom
queue/6293-787-kitty-slice-a
Nov 3, 2026
Merged

dezren39 merged 1 commit into
mainfrom
queue/6293-787-kitty-slice-a

Conversation

@dezren39

@dezren39 dezren39 commented Nov 2, 2026 •

Copy link
Copy Markdown
Member

Summary

 Key.parse                 # unchanged legacy behavior
+Key.parse_events          # rich keys, modifiers, and Press events
+Key.to_legacy             # project only representable meanings
+kitty-disambiguate-v1 reference + shared fixtures

Slice A of #787 only. The decoder is additive and inert: no negotiation, SSH/browser activation, or session changes. Numeric forms, modifier encoding, and functional-key entries were verified against the upstream kitty keyboard protocol on 2026-11-02.

Evidence

  • Before: just roc-test — Key had 13 legacy expectations and no rich decoder.
  • After: just roc-test — RocJson 29, Screen 15, Key 59 expectations pass; fixture JSON parses; git diff --check clean.
  • Existing Key.parse expectations, including modified-arrow Unknown, remain unchanged.

Merge Danger

Door: two-way

Blast Radius: low

New API and fixtures only; active behavior remains unchanged. Unsupported protocol forms remain Unknown. Later activation slices remain gated on F13.4 detection (#786).


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.

@dezren39
dezren39 requested a review from a team as a code owner November 2, 2026 16:11
@coderabbitai

coderabbitai Bot commented Nov 2, 2026

Copy link
Copy Markdown

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 56 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

Learn how review limits work.

Review configuration:

Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: a340c459-88ed-4f13-a04a-a1ade3cc9b24
Commits

Reviewing files that changed from the base of the PR and between 750bc13 and 911d7a4.

Files selected for processing: 3
  • doc/2026-11-02T_reference_kitty_disambiguate_v1.md
  • doc/kitty-disambiguate-v1-fixtures.json
  • pkgs/id/examples/roc-world/Key.roc
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 2, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-02T16:14:47.384346Z 911d7a4 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 911d7a4294

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

} else {
match digit_value(List.first(bytes) ?? 0) {
Err(_) => Err({})
Ok(digit) => if value > 111111 { Err({}) } else { parse_decimal_help(drop(bytes, 1), value * 10 + digit) }

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Allow the full Unicode range in decimal parsing

For CSI-u key numbers from 1111120 through 1114111, this accumulator guard rejects valid Unicode scalars before the final digit is appended, even though key_from_code explicitly accepts them. For example, ESC [ 1113856;5u (Control+U+10FF00) becomes EventUnknown instead of a scalar event. Allow an accumulator up to 111411 and retain the existing final bounds check in parse_decimal so the decoder supports its advertised range through U+10FFFF.

Useful? React with 👍 / 👎.

@dezren39
dezren39 merged commit 57ee2ec into main Nov 3, 2026
1 check passed
@dezren39
dezren39 deleted the queue/6293-787-kitty-slice-a branch November 3, 2026 13:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant